package David;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

public class DeveloperForTest {

	//public ArrayList<Proyecto> Lista_Proyectos = new ArrayList<Proyecto>(3);
	//public ArrayList<Desarrollador> Lista_Desarrolladores = new ArrayList<Desarrollador>(3);
	//public ArrayList<Tarea> Lista_Tareas = new ArrayList<Tarea>(10);
	//public ArrayList<Developer> Lista = new ArrayList<Developer>(5);  
	
	public Map<Integer, Proyecto> Proyectos_Lista = new HashMap<Integer, Proyecto>();
	public Map<Integer, Desarrollador> Desarrolladores_Lista = new HashMap<Integer, Desarrollador>();
	public Map<Integer, Tarea> Tarea_Lista = new HashMap<Integer, Tarea>();
	
	public DeveloperForTest(){
		/*
		try
		{
			GenerarDesarrolladores();
			GenerarProyectos();
		}catch(Exception e){
			
		}
		finally{
						
		}
		*/
	}
	
	public void GenerarDesarrolladores(int id_desarrollador, String nombre_desarrollador, int id_proyecto){
		
		Desarrollador objDes1 = new Desarrollador();
		    
        try
        {
        	//System.out.println("--------Inicio de Creacion de Desarrolladores------------------");
        	
        	objDes1.setDesarrollador_id(id_desarrollador);
	    	objDes1.setDesarrollador_nombre(nombre_desarrollador);
	    	objDes1.setProyecto_id(id_proyecto);
	    	Desarrolladores_Lista.put(id_desarrollador, objDes1);
	    	
            System.out.println("Desarrollador Registrado Correctamente");

            //ListarDesarrolladores();
            //System.out.println("--------Fin de Creacion de Desarrolladores---------------------");

        }catch(Exception e)
        {
            System.out.println("Fallo el registro de desarrolladores : " + e.getMessage().toString());
                
        }
        finally
        {
        	objDes1=null;        	
        }
	}
	
	public void GenerarProyectos(int id_proyecto, String nombre_proyecto){
		Proyecto objPro1 = new Proyecto();
		//Proyecto objPro2 = new Proyecto();
		//Proyecto objPro3 = new Proyecto();
		
        try
        {
        	//System.out.println("--------Inicio de Creacion de Proyectos------------------");
        	objPro1.setProyecto_id(id_proyecto);
        	objPro1.setProyecto_nombre(nombre_proyecto);
       	 	/*
        	objPro2.setProyecto_id(2);
        	objPro2.setProyecto_nombre("Proyecto Java ftw");
        	
        	objPro3.setProyecto_id(3);
        	objPro3.setProyecto_nombre("Proyecto Apple");       	 
        	*/
        	/*
        	Lista_Proyectos.add(objPro1);
        	Lista_Proyectos.add(objPro2);
        	Lista_Proyectos.add(objPro3);
        	*/
        	
        	//test con map
        	Proyectos_Lista.put(id_proyecto, objPro1);
        	//Proyectos_Lista.put(2, objPro2);
        	//Proyectos_Lista.put(3, objPro3);
            //fin test con map
            
            System.out.println("Proyecto Registrado Correctamente");
                        
            //ListarProyectos();                  
            
            //System.out.println("--------Fin de Creacion de Proyectos---------------------");
                            
        }catch(Exception e)
        {
            System.out.println("Fallo el registro de proyectos : " + e.getMessage().toString());
                
        }
        finally
        {
        	objPro1=null;
        	//objPro2=null;
        	//objPro3=null;
        }
	}
	
	public boolean GenerarTareas(int tarea_id, String tarea_nombre, int tarea_tiempo_restante, int proyecto_id, String descripcion)
	{
		
		Tarea objTarea = new Tarea();
		try
		{
			if (BuscarTarea(tarea_id)==false)
			{
				if (tarea_tiempo_restante<=0)
				{
					System.out.println("Tiempo de la tarea no puede ser menor o igual a cero");
					return false;
				}
				else
				{
					objTarea.setTarea_id(tarea_id);
					objTarea.setTarea_nombre(tarea_nombre);
					objTarea.setTarea_tiempo_restante(tarea_tiempo_restante);
					objTarea.setProyecto_id(proyecto_id);
					objTarea.setDescripcion(descripcion);
					
					Tarea_Lista.put(tarea_id, objTarea);
					System.out.println("Tarea Registrada Correctamente");
					ListarTareas();	
					return true;
				}
				
			}
			else
			{
				System.out.println("La tarea ya se encuentra registrada");
				return false;
			}
						
			
		}catch(Exception e){
			System.out.println("Fallo el registro de la tarea : " + e.getMessage().toString());
			System.out.println("id de la tarea que genero el error: " + tarea_id);
			return false;
		}
		finally{
			objTarea=null;		
		}		
	}
	
	public boolean AsignarTareas(int tarea_id, int desarrollador_id)
	{
		
		//Tarea objTarea = new Tarea();
		try
		{
			
			
			System.out.println("id des: " + Desarrolladores_Lista.get(desarrollador_id).getDesarrollador_id() + " || Proy id des: " + Desarrolladores_Lista.get(desarrollador_id).getProyecto_id());
			System.out.println("id tarea: " + Tarea_Lista.get(tarea_id).getTarea_id() + " || Proy id tarea: " + Tarea_Lista.get(tarea_id).getProyecto_id());
			
			if (Desarrolladores_Lista.get(desarrollador_id).getProyecto_id()==Tarea_Lista.get(tarea_id).getProyecto_id())
			{
				Tarea_Lista.get(tarea_id).setdesarrollador_id(desarrollador_id);
				System.out.println("Tarea Asignada Correctamente");
			}
			else
			{
				System.out.println("Desarrollador y Tarea no pertenecen al mismo proyecto");
			}
			
			
			/*
			for (int i = 1; i <= Tarea_Lista.size() ; i++)
			{
				if(Tarea_Lista.get(i).getTarea_id() == tarea_id)
				{
					Tarea_Lista.get(i).setdesarrollador_id(desarrollador_id);
					//Lista_Tareas.get(i).setProyecto_id(proyecto_id);
					System.out.println("Tarea Asignada Correctamente");
				}
			}
			*/
			
			ListarTareas();
			
			return true;
		}catch(Exception e){
			System.out.println("Fallo la asignacion de la tarea : " + e.getMessage().toString());
			return false;
		}
		finally{
			//objTarea=null;		
		}		
	}
	
	public void ListarDesarrolladores()
    {
     
		for (int i = 1; i <= Desarrolladores_Lista.size() ; i++)
            {
                    System.out.println("Desarrollador Id: " + Desarrolladores_Lista.get(i).getDesarrollador_id() + " || Desarrolador Nombre: " + Desarrolladores_Lista.get(i).getDesarrollador_nombre()  + " || Id proyecto asignado: " + Desarrolladores_Lista.get(i).getProyecto_id());                      
            }
            
    }
	
	public void ListarProyectos()
    {
     
		for (int i = 1; i <= Proyectos_Lista.size() ; i++)
			{
			System.out.println("Proyecto Id: " + Proyectos_Lista.get(i).getProyecto_id() + " || Proyecto Nombre: " + Proyectos_Lista.get(i).getProyecto_nombre());
			}
		/*
		for (int i = 0; i < Lista_Proyectos.size() ; i++)
            {
                    System.out.println("Proyecto Id: " + Lista_Proyectos.get(i).getProyecto_id() + " || Proyecto Nombre: " + Lista_Proyectos.get(i).getProyecto_nombre());                      
            }
        */    
    }
	
	private void ListarTareas()
    {
     
		for (int i = 1; i <= Tarea_Lista.size() ; i++)
            {
                    System.out.println("Tarea Id: " + Tarea_Lista.get(i).getTarea_id() + 
                    		" || Tarea Nombre: " + Tarea_Lista.get(i).getTarea_nombre() + 
                    		" || Tiempo restante de tarea: " + Tarea_Lista.get(i).getTarea_tiempo_restante() + " horas" +
                    		" || Id Proyecto: " + Tarea_Lista.get(i).getProyecto_id() +
                    		" || Id Desarrollador: " + Tarea_Lista.get(i).getdesarrollador_id());                      
            }
            
    }
	
	public void ListarTareasxHacer(int id_desarollador)
    {
				
		for (int i = 1; i <= Tarea_Lista.size() ; i++)
            {
						
				if (Tarea_Lista.get(i).getdesarrollador_id()==id_desarollador)
				{
					
					
					System.out.println("Tarea Id: " + Tarea_Lista.get(i).getTarea_id() + 
	                		" || Tarea Nombre: " + Tarea_Lista.get(i).getTarea_nombre() + 
	                		" || Tiempo restante de tarea: " + Tarea_Lista.get(i).getTarea_tiempo_restante() + " horas" +
	                		" || Id Proyecto: " + Proyectos_Lista.get(Tarea_Lista.get(i).getProyecto_id()).getProyecto_nombre() +
	                		" || Id Desarrollador: " + Desarrolladores_Lista.get(Tarea_Lista.get(i).getdesarrollador_id()).getDesarrollador_nombre() +
	                		" || Descripcion: " + Tarea_Lista.get(i).getDescripcion());  
				}
                                        
            }
            
    }
	
	private Boolean BuscarTarea(int Id)
		{
			//int Indice = -1;
			
			/*
			for (int i = 0; i < Lista_Tareas.size() ; i++)
			{
				if(Lista_Tareas.get(i).getTarea_id() == Id)
				{
					Indice = i;
				}
			}
			*/
			return Tarea_Lista.containsKey(Id);
			
			//return Indice;
		}
	
	 
	
}
